1. Size & Layout
    • Each PCI function has 256 bytes of configuration space.
    • First 64 bytes = Configuration Header (mandatory).
    • Remaining 192 bytes = Optional, device-specific features.

  1. System Configuration Process
    • Step 1: Boot ROM firmware does the initial setup.
    • Step 2: Operating System (OS) may reconfigure devices and reassign resources after loading.
    • → Configuration can happen twice (once by firmware, once by OS).

  1. Header Types
    • Type 0 Header → Function is a normal device (not a bridge).
    • Type 1 Header → Function is a bridge (creates another PCI bus).
    • The Header Type field is located in Dword 3, Byte 2 of the configuration header.

  1. Enumeration (Discovery Process)
    • The OS (or firmware) scans the PCI bus to discover devices/functions.
    • One of the first steps: check the Header Type to know if the function is:
      • A device (Type 0)
      • Or a bridge (Type 1)